home *** CD-ROM | disk | FTP | other *** search
- #include "stdio.h"
- #include "stdlib.h"
- #include "string.h"
- #include "io.h"
- #include "stat.h"
- #include "types.h"
- #include "fcntl.h"
- #include "conio.h"
-
- #include "cnvt.h"
-
-
-
-
- int option_cnvt(int *,char *,char *,char *,int,char **) ;
- int open_LoadFile(int *,char *) ;
- int open_SaveFile(int *,char *) ;
-
- int Type,ans,ret ;
-
- int W_fp,S_fp1,S_fp2 ;
-
- char WAV_F[128],SND_F1[128],SND_F2[128] ;
-
-
- int main(int argc,char *argv[])
- {
- ret=option_cnvt(&Type,WAV_F,SND_F1,SND_F2,argc,argv) ;
- if(ret!=0)
- {
- puts("変換作業を中止します") ;
- return ret ;
- }
-
- switch(Type)
- {
- case 1: /* WAV to SND (モノラル) */
- puts("WAV形式のファイルをSNDファイルにモノラル変換します") ;
- printf("読み込みファイル:%s\n",WAV_F) ;
- printf("書き込みファイル:%s\n",SND_F1) ;
- ret=open_LoadFile(&W_fp,WAV_F) ;
- if(ret!=0)
- {
- puts("変換作業を中止します") ;
- return ret ;
- }
- ret=open_SaveFile(&S_fp1,SND_F1) ;
- if(ret!=0)
- {
- ret=_close(W_fp) ;
- puts("変換作業を中止します") ;
- return ret ;
- }
- ret=Cnvt_WAV_SND(W_fp,S_fp1,0,1) ;
- if(ret!=0)
- {
- printf("変換エラー%d番が発生しました",ret) ;
- return ret ;
- }
- puts("変換作業を完了しました") ;
- ret=_close(W_fp) ;
- if(ret!=0)
- {
- puts("ファイルクローズに失敗しました") ;
- return 1 ;
- }
- ret=_close(S_fp1) ;
- if(ret!=0)
- {
- puts("ファイルクローズに失敗しました") ;
- return 1 ;
- }
- puts("正常終了しました") ;
- break;
-
-
- case 2: /* SND to WAV (モノラル) */
- puts("SNDファイルをWAV形式のファイルにモノラル変換します") ;
- printf("読み込みファイル:%s\n",SND_F1) ;
- printf("書き込みファイル:%s\n",WAV_F) ;
- ret=open_LoadFile(&S_fp1,SND_F1) ;
- if(ret!=0)
- {
- puts("変換作業を中止します") ;
- return ret ;
- }
- ret=open_SaveFile(&W_fp,WAV_F) ;
- if(ret!=0)
- {
- ret=_close(S_fp1) ;
- puts("変換作業を中止します") ;
- return ret ;
- }
- ret=Cnvt_SND_WAV(W_fp,S_fp1,0,1) ;
- if(ret!=0)
- {
- printf("変換エラー%d番が発生しました",ret) ;
- return ret ;
- }
- puts("変換作業を完了しました") ;
- ret=_close(W_fp) ;
- if(ret!=0)
- {
- puts("ファイルクローズに失敗しました") ;
- return 1 ;
- }
- ret=_close(S_fp1) ;
- if(ret!=0)
- {
- puts("ファイルクローズに失敗しました") ;
- return 1 ;
- }
- puts("正常終了しました") ;
- break;
-
-
- case 3: /* WAV to SND (ステレオ) */
- puts("WAV形式のファイルをSNDファイルにステレオ変換します") ;
- printf("読み込みファイル:%s\n",WAV_F) ;
- printf("書き込みファイル:%s\n",SND_F1) ;
- printf(" %s\n",SND_F2) ;
- ret=open_LoadFile(&W_fp,WAV_F) ;
- if(ret!=0)
- {
- puts("変換作業を中止します") ;
- return ret ;
- }
- ret=open_SaveFile(&S_fp1,SND_F1) ;
- if(ret!=0)
- {
- ret=_close(W_fp) ;
- puts("変換作業を中止します") ;
- return ret ;
- }
- ret=open_SaveFile(&S_fp2,SND_F2) ;
- if(ret!=0)
- {
- ret=_close(W_fp) ;
- ret=_close(S_fp1) ;
- puts("変換作業を中止します") ;
- return ret ;
- }
- ret=Cnvt_WAV_SND(W_fp,S_fp1,S_fp2,2) ;
- if(ret!=0)
- {
- printf("変換エラー%d番が発生しました",ret) ;
- return ret ;
- }
- puts("変換作業を完了しました") ;
- ret=_close(W_fp) ;
- if(ret!=0)
- {
- puts("ファイルクローズに失敗しました") ;
- return 1 ;
- }
- ret=_close(S_fp1) ;
- if(ret!=0)
- {
- puts("ファイルクローズに失敗しました") ;
- return 1 ;
- }
- ret=_close(S_fp2) ;
- if(ret!=0)
- {
- puts("ファイルクローズに失敗しました") ;
- return 1 ;
- }
- puts("正常終了しました") ;
- break;
-
-
- case 4: /* SND to WAV (ステレオ) */
- puts("SNDファイルをWAV形式のファイルにステレオ変換します") ;
- printf("読み込みファイル:%s\n",SND_F1) ;
- printf(" %s\n",SND_F2) ;
- printf("書き込みファイル:%s\n",WAV_F) ;
- ret=open_LoadFile(&S_fp1,SND_F1) ;
- if(ret!=0)
- {
- puts("変換作業を中止します") ;
- return ret ;
- }
- ret=open_LoadFile(&S_fp2,SND_F2) ;
- if(ret!=0)
- {
- ret=_close(S_fp1) ;
- puts("変換作業を中止します") ;
- return ret ;
- }
- ret=open_SaveFile(&W_fp,WAV_F) ;
- if(ret!=0)
- {
- ret=_close(S_fp1) ;
- ret=_close(S_fp2) ;
- puts("変換作業を中止します") ;
- return ret ;
- }
- ret=Cnvt_SND_WAV(W_fp,S_fp1,S_fp2,2) ;
- if(ret!=0)
- {
- printf("変換エラー%d番が発生しました",ret) ;
- return ret ;
- }
- puts("変換作業を完了しました") ;
- ret=_close(W_fp) ;
- if(ret!=0)
- {
- puts("ファイルクローズに失敗しました") ;
- return 1 ;
- }
- ret=_close(S_fp1) ;
- if(ret!=0)
- {
- puts("ファイルクローズに失敗しました") ;
- return 1 ;
- }
- ret=_close(S_fp2) ;
- if(ret!=0)
- {
- puts("ファイルクローズに失敗しました") ;
- return 1 ;
- }
- puts("正常終了しました") ;
- break;
-
-
- default:
- puts("使い方") ;
- puts(" run386 -nocrt WAVSND.EXP {option} { wav snd_L { snd_R } } } ") ;
- puts("") ;
- puts("オプション:") ;
- puts(" -S /S WAVE形式のデータ wav.WAV を") ;
- puts(" SNDファイル snd_L.SND に変換する") ;
- puts(" snd_R を指定したときは wav.WAV をステレオ音声ファイルとみなし") ;
- puts(" snd_L.SND , snd_R.SND に左右の各チャンネルの音声を出力する") ;
- puts("") ;
- puts(" -W /W SNDファイル snd_L.SND を") ;
- puts(" WAVE形式のデータ wav.WAV に変換する") ;
- puts(" snd_R を指定したときは snd_L.SND と snd_R.SND をステレオ音声の") ;
- puts(" 左右のチャンネルと見なして読み込み FILE1.WAV をステレオ出力する") ;
- puts("") ;
- puts(" その他 ヘルプメッセージを表示する ") ;
- puts("") ;
- puts("注意 ") ;
- puts(" 各ファイル名は拡張子を付けずに指定してください!") ;
- puts(" 変換時は必ず入出力両方のファイル名を指定してください!") ;
- puts("") ;
- }
-
- return 0 ;
- }
-
-
- int option_cnvt(int *TYPE,char *WF,char *SF1,char *SF2,int ARGC,char *ARGV[])
- {
- if(ARGC<4)
- {
- *TYPE=0 ;
- return 0 ; /* ヘルプメッセージの表示 */
- }
-
- *TYPE=0 ;
-
- if((_strcmpi(ARGV[1],"/S"))==0) *TYPE=1 ; /* WAV to SND */
- if((_strcmpi(ARGV[1],"-S"))==0) *TYPE=1 ;
- if((_strcmpi(ARGV[1],"/W"))==0) *TYPE=2 ; /* SND to WAV */
- if((_strcmpi(ARGV[1],"-W"))==0) *TYPE=2 ;
-
- if(*TYPE==0) return 0 ; /* ヘルプメッセージの表示 */
-
- if(ARGC==4)
- {
- strcpy(WF,ARGV[2]) ;
- strcpy(SF1,ARGV[3]) ;
- strcat(WF,".WAV") ;
- strcat(SF1,".SND") ;
- }
- else
- {
- if(ARGC==5)
- {
- strcpy(WF,ARGV[2]) ;
- strcpy(SF1,ARGV[3]) ;
- strcpy(SF2,ARGV[4]) ;
- strcat(WF,".WAV") ;
- strcat(SF1,".SND") ;
- strcat(SF2,".SND") ;
- *TYPE=*TYPE+2 ; /* ステレオと見なす */
- if(strcmp(SF1,SF2)==0)
- {
- puts("出力ファイル名が異常です") ;
- return 1 ;
- }
- }
- else
- {
- *TYPE=0 ;
- return 0 ; /* ヘルプメッセージの表示 */
- }
- }
-
- return 0 ;
- }
-
- int open_LoadFile(int *FP,char *FName) /* 読み込みファイルをオープンする */
- {
- int ret ;
-
- ret=_access(FName,1) ;
- if(ret!=0)
- {
- puts("\aエラー発生") ;
- printf("読み込みファイル %s のアクセスに失敗しました\n",FName) ;
- return 1 ;
- }
- printf("読み込みファイル %s のアクセスに成功しました\n",FName) ;
-
- *FP=_open(FName,_O_RDONLY|_O_BINARY) ;
- if(*FP==-1) /* たぶんあり得ないことだと思う */
- {
- printf("読み込みファイル %s のオープンに失敗しました\n",FName) ;
- return 1 ;
- }
-
- return 0 ;
- }
-
- int open_SaveFile(int *FP,char *FName) /* 書き込みファイルをオープンする */
- {
- int ret ;
-
- ret=_access(FName,0) ;
- if(ret==0)
- {
- puts("\aエラー発生") ;
- printf("書き込みファイル %s が既に存在します\n",FName) ;
- return 1 ;
- }
- printf("書き込みファイル %s を新規作成します\n",FName) ;
-
- *FP=_open(FName,_O_WRONLY|_O_BINARY|_O_TRUNC|_O_CREAT,_S_IREAD|_S_IWRITE) ;
- if(*FP==-1) /* オープン失敗 */
- {
- printf("\a書き込みファイル %s のオープンに失敗しました\n",FName) ;
- return 1 ;
- }
-
- return 0 ;
- }
-